package com.yztctech.a25_02_intentservice;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

/**
 * Created by bodhixu on 2016/9/24.
 * 1. 异步方法onHandleIntent()方法继承自IntentService,排队执行每个任务,如果没有新任务到来,自动停止
 * 2. Service默认时运行在它所在的宿主进程的主进程中，也就是说如果我们在Service中做耗时工作，UI（主）线程会卡死，出现ARN程序无响应现象。为了防止这种情况出现，我们一般都是在Service中创建一个新的线程来处理一些耗时工作，这样就不会阻塞主线程。
 */
public class DownloadService extends IntentService{

    //自定义无参构造方法，手动调用父类有参的构造方法;todo ??
    public DownloadService() {
        super("com.yztctech.a25_02_intentservice.DownloadService");
    }

    //当外部启动Service的时候，就相当于下达一个任务，就会触发该方法，可以执行耗时操作
    /**
     * 外部启动service时,调用oncreate(),onstartcommand(),封装了onhandle(),就触发此方法,没有任务,就启动封装的stop()方法
     * */
    @Override
    protected void onHandleIntent(Intent intent) {
        //提取数据
        String url = intent.getStringExtra("key_url");
        Log.e("Tag", "url = " + url);
        //模拟网络操作
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e("Tag", "-----------》 onDestroy ");
    }
}
